import Scanner from './Scanner';
import nestTokens from './nestTokens'
/** 将mustache字符串装换为指定格式tokens */
export default function parseTemmplateTokens(templateStr) {
    let tokens = []
    let words;
    // 实例化一个扫描器，构造时候提供一个参数，这个参数就是模板字符串
    let scanner = new Scanner(templateStr)

    while (scanner.eos()) {
        // 收集大括号的文字
        words = scanner.scanUtil('{{')
        // 存起来
        if (words) {
            tokens.push(['text', words.trim()])
        }
        // 过大括号
        scanner.scan('{{')
        // 收集大括号的文字（反）
        words = scanner.scanUtil('}}')
        // 存起来
        if (words) {
            if (words[0] === '#') {
                tokens.push(['#', words.substring(1)])
            } else if (words[0] === '/') {
                tokens.push(['/', words.substring(1)])
            } else {
                tokens.push(['name', words.trim()])
            }
        }
        // 过大括号（反）
        scanner.scan('}}')
    }


    return nestTokens(tokens)
}